﻿/*
 * Authors:
 *   钟峰(Popeye Zhong) <9555843@qq.com>
 *
 * Copyright (c) 2017 Flagwind Game Studio. All rights reserved.
 */

using System;
using System.Collections.Generic;

namespace Flagwind.Gaming
{
	/// <summary>
	/// 表示游戏房间的操作接口。
	/// </summary>
	public interface IGameRoomManager
	{
		/// <summary>
		/// 开新房操作。
		/// </summary>
		/// <returns>如果开房成功则返回对应的房间，否则返回空(null)。</returns>
		GameRoom Open(byte typeId, int lease, string secret);

		/// <summary>
		/// 分配一个空闲的房间。
		/// </summary>
		/// <param name="typeId">房间类型。</param>
		/// <returns>如果分配成功则返回对应的房间，否则返回空(null)。</returns>
		GameRoom Allocate(int typeId);

		/// <summary>
		/// 退出游戏房间。
		/// </summary>
		void Exit();

		/// <summary>
		/// 进入房间操作。
		/// </summary>
		/// <param name="tableId">指定要进入的房间号。</param>
		/// <returns>如果进入成功则返回对应的房间，否则返回空(null)。</returns>
		GameRoom Enter(uint tableId, string secret);
	}
}
